package file;

import java.io.File;
import java.util.Scanner;

// 找到所有目录及其子目录的名称中存在指定字符的文件并删除
public class Demo9 {
    public static void main(String[] args) {
        System.out.println("输入要检查的目录：");
        Scanner scanner = new Scanner(System.in);
        String rootDirPath = scanner.nextLine();
        File rootDir = new File(rootDirPath);

        if(!rootDir.exists()){
            System.out.println("输入的地址不存在！");
            return;
        }else if(!rootDir.isDirectory()){
            System.out.println("输入的不是目录！");
            return;
        }

        System.out.println("输入要删除的字符：");
        String keyword = scanner.nextLine();

        scanDir(rootDir, keyword);
    }

    // 扫描当前目录
    private static void scanDir(File rootDir, String keyword){
        File[] files = rootDir.listFiles();
        // 如果当前目录为空
        if(files == null){
            return;
        }
        for(File file : files){
            System.out.println("扫描目录&文件：" + file.getAbsolutePath());
            // 如果是文件，判断有没有关键字
            if(file.isFile()){
                deleFile(file, keyword);
            }
            // 如果是目录，递归
            else if(file.isDirectory()){
                scanDir(file, keyword);
            }
        }
    }

    // 删除有关键字的文件
    private static void deleFile(File file, String keyword){
        if(file.getName().contains(keyword)){
            System.out.println("当前文件：" + file.getAbsoluteFile() + "包含关键字, 是否删除？是：y 否：n");
            Scanner scanner = new Scanner(System.in);
            // 忽略大小写
            String ch = scanner.next().trim().toLowerCase();
            if(ch.equals("y") || ch.equals("yes")){
                // 执行删除
                if(file.delete()){
                    System.out.println("删除成功");
                }else{
                    System.out.println("删除失败]");
                }
            }else if(ch.equals("n") || ch.equals("no")){
                System.out.println("已取消删除");
            }else{
                System.out.println("输入无效，请输入y(是)或n(否)");
            }
        }else{
            return;
        }
    }
}
